﻿namespace LambdaCalc.Spike

open System

module Booleans =
    
    let True = Term.Parse(@"\x.\y.x")
    let False = Term.Parse(@"\x.\y.y")

    let And = Term.Parse(@"\a.\b.((a b) F)")
              |> substituteFree ("F", False)

    let Not = Term.Parse(@"\f.\x.\y.((f y) x)")

    let Or = Term.Parse(@"\a.\b.((a T) b)")
                  |> substituteFree ("T", True)

    let IfThenElse = Term.Parse(@"\x.x")
